package exam.web.action;

import java.util.Date;
import java.util.List;

import exam.common.util.CommonUtil;
import exam.common.util.NullCheckUtil;
import exam.common.util.StringUtils;
import exam.model.dao.SubQuestionDAO;
import exam.model.entity.TSubQuestionEntity;
import exam.model.entity.TUserEntity;
import exam.web.action.base.ExaminationActionBase;

/**
 * <p>AddExaminationAction</p>
 * <p>Action thêm thông tin đề thi</p>
 * @author Phong
 * @version 5/5/2012
 */
public class AddExaminationAction extends ExaminationActionBase {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private List<TSubQuestionEntity> tSubQuestionEntityList;
	
	private SubQuestionDAO subQuestionDAO = new SubQuestionDAO();
	
	public String execute() throws Exception {
		String port = null;
		String btAdd = request.getParameter("btAdd");
		tSubQuestionEntityList = subQuestionDAO.selectListSubQuestion();
		if (NullCheckUtil.isNUll(btAdd)) {
			// tra ve port input
			port = INPUT;
		} else {
			validate();
			if(getFieldErrors().size() != 0) {
				System.out.println("loi");
				return ERROR;
			}
			tExaminationEntity.setCreateDate(new Date());
			tExaminationEntity.setUpdateDate(new Date());
			tExaminationEntity.setStatus(0);
			tExaminationEntity.setSubQuestionEntity(
					new TSubQuestionEntity(tExaminationEntity.getSubQuestId()));
			tExaminationEntity.setUserEntity(
					new TUserEntity(tExaminationEntity.getUserId()));
			if (examDAO.insertExamination(tExaminationEntity)) {
				// thong tin hien thi insert thanh cong
				addActionMessage(getText("Thêm đề thi thành công"));
				// tra ve port success
				port = SUCCESS;
				System.out.println("da them");
			}
		}
		return port;
	}
	
	public void validate() {
		if(StringUtils.isEmpty(tExaminationEntity.getExamCd())) {
			addFieldError("examCd", "Mã đề thi không được để trống");
		} else if(CommonUtil.lengthObject(tExaminationEntity.getExamCd()) > 5) {
			addFieldError("examCd", "Mã đề thi <= 5 ký tự");
		} else if(NullCheckUtil.isNotNull(examDAO.selectByCd(tExaminationEntity.getExamCd()))) {
			addFieldError("examCd", "Mã đề thi đã tồn tại");
		}
		if(CommonUtil.lengthObject(tExaminationEntity.getExamTitle()) < 10
				|| CommonUtil.lengthObject(tExaminationEntity.getExamTitle()) > 50) {
			addFieldError("examTitle", "Tiêu đề >= 10 và <=50 ký tự");
		}
		if(tExaminationEntity.getQuestNum() < 10) {
			addFieldError("questNum", "Số câu hỏi >= 10");
		}
		if(tExaminationEntity.getSubQuestId() == 0) {
			addFieldError("subQuestId", "Vui lòng chọn chủ đề của đề thi");
		}
	}
	
	public List<TSubQuestionEntity> gettSubQuestionEntityList() {
		return tSubQuestionEntityList;
	}

	public void settSubQuestionEntityList(
			List<TSubQuestionEntity> tSubQuestionEntityList) {
		this.tSubQuestionEntityList = tSubQuestionEntityList;
	}
}
